Content file sizes continue to grow as does the complexity and richness of the content being served over digital networks. Large sized content typically includes video, audio, web, gaming, application content, or any content that exceeds a certain file size.
Content delivery networks (CDNs) have adapted to improve the delivery of large sized content. The primary adaptation involves caching popular content in a distributed manner at different points-of-presence (PoP) located at different geographic locations. This allows the CDN to serve the same content to different sets of users from servers in locations that are closest to each set of users. In doing so, the CDN improves content delivery performance by reducing the total number of network hops that content travels in order to reach a user. Caching large sized content does however introduce various challenges with respect to optimizing CDN performance and cache utilization.
Each CDN PoP has a limited cache footprint. The cache footprint limits the amount of content that can be cached at the PoP. Many content servers can be collocated to the same PoP with each such server contributing to the overall cache footprint of the PoP.
A persistent request distribution scheme can be used to maximize the overall cache footprint. Persistent request distribution forwards requests for the same particular content to the same server PoP. As a result, the PoP can cache one copy of content at one particular PoP server knowing that the persistent request distribution scheme will forward all requests for that content to the same particular PoP server. In other words, the persistent request distribution scheme avoids redundantly caching copies of the same content to different servers operating within the same PoP.
Nevertheless, the quantity and increasing size of the content that is to be cached and delivered from each PoP typically exceeds the total cache footprint at a PoP. To maximize the available cache footprint and maximize the request cache-hit ratio, the PoP servers are normally configured to retain copies of the most frequently requested content or the newest content in cache. Stale content or infrequently requested content is removed from cache. However, several inefficiencies result when applying such content caching policies to the caching of large sized content.
One problem with caching large sized content is that several other content or objects may be removed from cache in order to free sufficient memory to cache one instance of the large sized content. This is especially significant when a single server is tasked with caching the entirety of large sized content. For example, a first PoP server may be selected for caching and delivery of a first set of content and a second PoP server may be selected for caching and delivery of a different second set of content. When the first set of content does not include large sized content, the first PoP server may be able to cache all the first set of content and have the content ready for immediate delivery. When the second set of content includes only large sized content, the second PoP server may be limited to caching only a subset of the second set of content. The second PoP server would have to retrieve uncached instances of the second set of content from content origin sites before being able to satisfy requests for such content. This results in a disproportionate cache-hit ratio at the first PoP server relative to the second PoP server and further results in unbalanced server and content delivery performance from the PoP. Specifically, performance of the second PoP server and delivery of the second set of content is degraded relative to the first PoP server and delivery of the first set of content as the second PoP server will have to make more retrievals to content origin sites than the first PoP server because of the limited caching of the second set of content and because the second PoP server storage performs slower write operations than the first PoP server.
Another problem is that caching large sized content makes inefficient use of the available cache. For example, a video file may be four gigabytes in size, yet users may repeatedly request and view only a particular section of the video file. In such cases, the PoP servers cache the entire video file only to serve a small segment from the overall video. In other words, some portion of the cached content may never be served, but must be cached because it is part of the same file.
Yet another problem with caching large sized content is the potential for a single point of a failure. If a single server caches an entire two hour video stream and the server experiences some failure or performance degradation, then the entire two hour video stream becomes unavailable to all users that are routed to that PoP server, even though the users may attempt to watch different segments of the video stream.
Accordingly, there is a need to improve delivery of large sized content. To this end, there is further a need to improve the cacheability and caching of large sized content within a collective cache formed from a set of cooperative and collocated set of servers.